package Negocio;

import java.util.ArrayList;
import java.util.List;

import DTO.DTO_Factura;
import DTO.DTO_ItemFactura;
import DTO.DTO_MesaComposite;
import DTO.DTO_MesaSimple;
import Entities.Entity_Factura;
import Entities.Entity_ItemFactura;


public class Factura {

	private Mesa mesa;
	private int numFactura;
	private List<ItemFactura> itemsFactura;
	private float monto;
	private String estado;
	
	public Factura(){}
	
	public Factura(Mesa mesa, List<ItemFactura> itemsFactura, float monto, String estado) {
		super();
		this.mesa = mesa;
		this.numFactura = numFactura;
		this.itemsFactura = itemsFactura;
		this.monto = monto;
		this.estado = estado;
	}
	public Factura(DTO_Factura f) {
		if(f.getMesa() instanceof DTO_MesaSimple)
			this.mesa = new MesaSimple((DTO_MesaSimple) f.getMesa());
		else if(f.getMesa() instanceof DTO_MesaComposite)
			this.mesa = new MesaComposite((DTO_MesaComposite) f.getMesa());
		this.numFactura = f.getNumFactura();
		List<ItemFactura> ifs = null;
		for(DTO_ItemFactura itemfactura : f.getItemsFactura())
			ifs.add(new ItemFactura(itemfactura));
		this.itemsFactura = ifs;
		this.monto = f.getMonto();
		this.estado = f.getEstado();
	}
	
	

	public Factura(Entity_Factura f) {
		/*if(f.getMesa() instanceof DTO_MesaSimple)
			this.mesa = new MesaSimple((DTO_MesaSimple) f.getMesa());
		else if(f.getMesa() instanceof DTO_MesaComposite)
			this.mesa = new MesaComposite((DTO_MesaComposite) f.getMesa());*/
		this.numFactura = f.getNumFactura();
		List<ItemFactura> ifs = null;
		for(Entity_ItemFactura itemfactura : f.getItemsFactura())
			ifs.add(new ItemFactura(itemfactura));
		this.itemsFactura = ifs;
		this.monto = f.getMonto();
		this.estado = f.getEstado();
	}

	public Mesa getMesa() {
		return mesa;
	}
	public void setMesa(Mesa mesa) {
		this.mesa = mesa;
	}
	public int getNumFactura() {
		return numFactura;
	}
	public void setNumFactura(int numFactura) {
		this.numFactura = numFactura;
	}
	public List<ItemFactura> getItemsFactura() {
		return itemsFactura;
	}
	public void setItemsFactura(List<ItemFactura> itemsFactura) {
		this.itemsFactura = itemsFactura;
	}
	public float getMonto() {
		return monto;
	}
	public void setMonto(float monto) {
		this.monto = monto;
	}
	public String getEstado() {
		return estado;
	}
	public void setEstado(String estado) {
		this.estado = estado;
	}
	public DTO_Factura toDTO()
	{
		DTO_Factura f = new DTO_Factura();
		f.setMesa(mesa.toDTO());
		f.setEstado(estado);
		f.setMonto(monto);
		f.setNumFactura(numFactura);
		List<DTO_ItemFactura> ifs = new ArrayList<DTO_ItemFactura>();
		for(ItemFactura ifa: itemsFactura)
			ifs.add(ifa.toDTO());
		f.setItemsFactura(ifs);
		return f;
	}

	public Entity_Factura toEntity() {
		Entity_Factura f = new Entity_Factura();
		//f.setMesa(mesa.toDTO());
		f.setEstado(estado);
		f.setMonto(monto);
		f.setNumFactura(numFactura);
		List<Entity_ItemFactura> ifs = new ArrayList<Entity_ItemFactura>();
		for(ItemFactura ifa: itemsFactura)
			ifs.add(ifa.toEntity());
		f.setItemsFactura(ifs);
		return f;
	}
}
